#!/usr/bin/perl -w

#Funciones para manejar ideas
#Elena Almeida Cano
#04/11/2005

##############################################################
# Funcion:  get_headers
# Utilidad: Trae las cabeceras que van asociadas a las ideas
##############################################################
sub get_headers
{
    local ($dbName) = @_;
    local ($sth, $sql, $numRows, %data);
    
    $dbh = &openDB($dbName);

    $sql = "SELECT * FROM IdeaHeader;"; 

    $sth = $dbh->prepare($sql);
    $sth->execute || die "No se puede ejecutar la orden SQL";

    $numRows = 0;
    while ($row = $sth->fetchrow_hashref)
    {
	$numRows = $numRows + 1;
	$data{'idHeader'.$numRows}   = $row->{idHeader};
	$data{'typeH'.$numRows} = $row->{typeH};
	$data{'descriptionSp'.$numRows} = $row->{descriptionSp};
	$data{'descriptionEng'.$numRows} = $row->{descriptionEng};
    }
    $data{numRows} = $numRows;
    
   $dbh->disconnect;

    return %data;
}

##############################################################
# Funcion:  get_grades
# Utilidad: Obtiene el grado referente a la opinion de una idea
##############################################################
sub get_grades
{
    local ($dbName) = @_;
    local ($sth, $sql, $numRows, %data);
    
    $dbh = &openDB($dbName);

    $sql = "SELECT * FROM IdeaGrade;"; 

    $sth = $dbh->prepare($sql);
    $sth->execute || die "No se puede ejecutar la orden SQL";

    $numRows = 0;
    while ($row = $sth->fetchrow_hashref)
    {
	$numRows = $numRows + 1;
	$data{'idGrade'.$numRows}   = $row->{idGrade};
	$data{'gDescription'.$numRows} = $row->{gDescription};
	$data{'grade'.$numRows} = $row->{grade};
    }
    $data{numRows} = $numRows;
    
    $dbh->disconnect;

    return %data;
}


##############################################################
# Funcion:  get_ideas
# Utilidad: Obtiene las ideas de la anotacion indicada
##############################################################
sub get_ideas
{
    local ($dbName, $id) = @_;
    local ($sth, $sql, $numRows, %data);
    
    $dbh = &openDB($dbName);

    $sql = "SELECT * FROM Idea where idNote=$id;"; 

    $sth = $dbh->prepare($sql);
    $sth->execute || die "No se puede ejecutar la orden SQL";

    $numRows = 0;
    while ($row = $sth->fetchrow_hashref)
    {
	$numRows = $numRows + 1;
	$data{'idIdea'.$numRows}   = $row->{idIdea};
	$data{'idNote'.$numRows}   = $row->{idNote};
	$data{'idHeader'.$numRows}   = $row->{idHeader};
	$data{'comment'.$numRows}   = $row->{comment};
	$data{'idGrade'.$numRows}   = $row->{idGrade};
    }
    $data{numRows} = $numRows;
    
    $dbh->disconnect;

    return %data;
}

##############################################################
# Funcion:  save_Idea
# Utilidad: Almacena una idea asociada a una anotacion
##############################################################
sub save_ideas
{
    local($dbName, $idNota, @ideas)= @_;
    local($dbh, %header, %grade);

    %grade = &get_grades($dbName);
    %header = &get_headers($dbName);
    $lDate = &Date;

    my %arrayCabeceras;
    foreach $i (1 .. $header{numRows})
    {
      $typeH = $header{typeH.$i};
      $idH = $header{idHeader.$i};
      $arrayCabeceras{"$typeH"} = "$idH";
    }
    
    my %arrayGrados;
    foreach $i (1 .. $grade{numRows})
    {
      $typeG = $grade{gDescription.$i};
      $idG = $grade{idGrade.$i};
      $arrayGrados{"$typeG"} = "$idG";
    }
    
    $dbh = &openDB($dbName);
    for($i=0;$i<$#ideas; $i++)
    {
	    $idHeader = $arrayCabeceras{$ideas[$i]}; $i++;
	    $comment = $ideas[$i]; $i++;
	    $idGrade = $arrayGrados{$ideas[$i]};    
	    $sql = "INSERT INTO Idea (idNote, idHeader, comment, idGrade) 
	    VALUES ($idNote, $idHeader, '$comment', $idGrade);";	    
	    $sth = $dbh->prepare($sql);
	    $sth->execute || die "No se puede ejecutar la orden SQL";
    }
    
    $sql = "SELECT LAST_INSERT_ID(idIdea) AS idlast FROM Idea;";
    $sth = $dbh->prepare($sql);
    $sth->execute || die "No se puede ejecutar la orden SQL";

    while ($row = $sth->fetchrow_hashref)
    {
	$idIdea = $row->{idlast};
    }
    $dbh->disconnect;

    return($idIdea);

}

return 1;
